import axios from 'axios'

import store from '../store'
import router from '@/router'
import { Message } from 'element-ui'
import $auth from './auth'

const { getToken } = $auth

/* Params
 **options：axios参数
 **msg：提示语
 **flg：（boolean）定义header：Content-Type
 **customize: （boolean）true:自定义提示语 false：使用统一配置的提示语
*/
export const fetchToken = (options, msg, flg) => {
	return new Promise((resolve, reject) => {
		const instance = axios.create({
			timeout: 20000,
			baseURL,
			isRetryRequest: false, // 用来处理刷新token后重新请求的自定义变量
			headers: flg ? { 'Content-Type': 'application/x-www-from-urlencoded;charset=utf-8' } : { 'Content-Type': 'application/json' }
		})
		instance.interceptors.request.use( config => {
	  // 请求拦截器
			if (store.getters.token) {
				config.headers['encrypt-token'] = getToken()
				
			}
			 return config
		}, err => {
			  console.log('error 请求拦截 : ', err)
			  return Promise.reject(err);
		 })
		instance.interceptors.response.use( response => {
		// 响应拦截器
			let res = response.data
			if (res) {
				switch (res.code) {
					case '1000':
					if (msg) {
					Message({
						message: msg,
						type: 'success',
						duration: 2 * 1000
					})
					}
					resolve(res)
					break
					case '-1':
					Message({
						message: '系统存在异常，请重试',//'数据加载失败，请重试',
						type: 'error',
						duration: 2 * 1000
					})
					reject(res)
					break
					default:
						Message({
							message: res.message,//'数据加载失败，请重试',
							type: 'error',
							duration: 2 * 1000
						})
						reject(res)
					break
				}
			}
			return response
		},  err=> {
			Message({
				message: '呀，网络正在开小差，请重试',
				type: 'error',
				duration: 2 * 1000
			})
			
			return reject(err)
		})

		instance(options)
	})
}

// export function fetchRefreshToken(options, flg, msg) {  // 退出登录专用
// 	return new Promise((resolve, reject) => {
// 		const instance = axios.create({
// 			timeout: 20000,
// 			baseURL,
// 			headers: flg ? { 'Content-Type': 'application/x-www-from-urlencoded;charset=utf-8' } : { 'Content-Type': 'application/json' }
// 		})
// 		instance(options)
// 		.then(response => {
// 			let res = response.data
			
// 				if (+res.code === 1000) {
// 					if (msg) {
// 						Message({
// 							message: msg,
// 							type: 'success',
// 							duration: 2 * 1000
// 						})
// 					}
// 				} else {
// 					Message({
// 						message: res.message,
// 						type: 'success',
// 						duration: 2 * 1000
// 					})
// 				}
			
// 			resolve(res)
// 		})
// 		.catch(error => {
// 			console.log('err' + error)// for debug
// 			Message({
// 				message: '呀，网络正在开小差，请刷新页面',
// 				type: 'error',
// 				duration: 2 * 1000
// 			})
// 			reject(error)
// 		})
// 	})
// }

// export function fetch(options, flg, msg) { // 认证获取token使用
// 	var Author = {}

// 	return new Promise((resolve, reject) => {
// 		const instance = axios.create({
// 			timeout: 20000,
// 			baseURL,
// 			headers: flg ? Object.assign({}, { 'Content-Type': 'application/x-www-form-urlencoded' }, Author) : { 'Content-Type': 'application/json' }
// 		})
// 		instance.interceptors.response.use( response => {
// 		// 响应拦截器
// 			let res = response.data
// 			if (res) {
// 				switch (res.code) {
// 					case '0':
// 					if (msg) {
// 					Message({
// 						message: msg,
// 						type: 'success',
// 						duration: 2 * 1000
// 					})
// 					}
// 					resolve(res)
// 					break
// 					case '-1':
// 					Message({
// 						message: '系统异常，请重试',//'数据加载失败，请重试',
// 						type: 'error',
// 						duration: 2 * 1000
// 					})
// 					reject(res)
// 					break
// 					default:
// 						Message({
// 							message: res.message,//'数据加载失败，请重试',
// 							type: 'error',
// 							duration: 2 * 1000
// 						})
// 						reject(res)
// 					break
// 				}
// 			}
// 			return response
// 		},  err=> {
		
// 			Message({
// 				message: '呀，网络正在开小差，请重试',
// 				type: 'error',
// 				duration: 2 * 1000
// 			})
// 			reject(err)
// 		})
// 		instance(options)
// 	})
// }

// export function fetchForUpload(options, json) {    // 上传
// 	return new Promise((resolve, reject) => {
// 		const instance = axios.create({
// 			timeout: 20000,
// 			baseURL,
// 			headers: {
// 				'Content-Type': 'multipart/form-data', 'encrypt-token': getToken()
// 			}
// 		})
// 		instance(options)
// 			.then(response => {
// 				handleErrorCode(response).then(res => { // 错误码处理
// 					reject(res)
// 				})
// 				resolve(response.data)
// 			}).catch(error => {
// 				console.log('err' + error)// for debug
// 				Message({
// 					message: '呀，网络正在开小差，请尝试重新上传',
// 					type: 'error',
// 					duration: 2 * 1000
// 				})
// 				reject(error)
// 			})
// 	})
// }

// export function fetchExport(options, fileName) {    // excel导出
// 	return new Promise((resolve, reject) => {
// 		const instance = axios.create({
// 			timeout: 20000,
// 			baseURL,
// 			isRetryRequest: false, // 用来处理刷新token后重新请求的自定义变量
// 			headers: { 'Content-Type': 'application/json' },
// 			responseType: 'arraybuffer'  // 'blob'
// 		})
// 		instance.interceptors.request.use( config => {
// 	  // 请求拦截器
// 	  	if (store.getters.token) {
// 	  		config.headers['encrypt-token'] = getToken()
// 	  	}
// 			 return config
// 			 }, err => {
// 			  console.log('error 请求拦截 : ', err)
// 			  return Promise.reject(err);
// 		 })
// 		instance.interceptors.response.use(res=> {
// 			console.log('export', res);
// 			let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' })
//         if (window.navigator.msSaveOrOpenBlob) {
//           navigator.msSaveBlob(blob, fileName)
//         } else {
//           var link = document.createElement('a')
//           link.href = window.URL.createObjectURL(blob)
//           link.download = fileName
//           link.click()
//           window.URL.revokeObjectURL(link.href)
//         }
//         return res
// 		})
// 		instance(options)
// 	})
// }


// // 下载pdf
// export function fetchUploadPdf(options, fileName) {    // excel导出
// 	return new Promise((resolve, reject) => {
// 		const instance = axios.create({
// 			timeout: 20000,
// 			baseURL,
// 			isRetryRequest: false, // 用来处理刷新token后重新请求的自定义变量
// 			headers: { 'Content-Type': 'application/octet-stream' },
// 			responseType: 'blob'
// 		})
// 		instance.interceptors.request.use( config => {
// 			// 请求拦截器
// 			if (store.getters.token) {
// 				config.headers['encrypt-token'] = getToken()
// 			}
// 			return config
// 		}, err => {
// 			console.log('error 请求拦截 : ', err)
// 			return Promise.reject(err);
// 		})
// 		instance.interceptors.response.use(res=> {
// 			console.log('export', res);
//      if(+res.status === 200) {
// 			 let nameIndex = res.headers['content-disposition'].indexOf('=') + 1
// 			 let name = res.headers['content-disposition'].substr(nameIndex)

// 			 let blob = new Blob([res.data], { type: 'multipart/form-data' })
// 			 if (window.navigator.msSaveOrOpenBlob) {
// 				 navigator.msSaveBlob(blob, name)
// 			 } else {
// 				 var link = document.createElement('a')
// 				 link.href = window.URL.createObjectURL(blob)
// 				 link.download = name
// 				 link.click()
// 				 window.URL.revokeObjectURL(link.href)
// 			 }
// 			 resolve(res)
// 			 return res
// 		 } else {
// 			 reject(res)
// 		 }

// 		})
// 		instance(options)
// 	})
// }
